SetAxisCyclicSwitch
使用轴位置来控制重复触发数位输出的开关。当轴达到特定的位置,开关即开启或关闭,开关可受轴的向前与向后移动所控制。
语法
KsCommandStatus SetAxisCyclicSwitch(
int Index,
McOutput Output,
double StartPosition,
McCamSwitch CyclicSwitch,
McLengthType IntervalType,
double Interval,
McLengthType DurationType,
double Duration,
McSource ValueSource
);
参数
Index [in]:轴索引。索引以零为起点;别名将影响此参数。
Outputs [in]:选择对应轨道所控制的数位输出。请见 McOutput 结构。
StartPosition [in]:周期开始的位置。
CyclicSwitch [in]:控制开关动作,请见 McCamSwitch 结构。
- TrackNumber:必须为零。
- FirstOnPosition:必须为非负数,为每个周期开始位置的相关距离。
- LastOnPosition:必须为正数,且较 FirstOnPosition 为大,为每个周期开始位置的相关距离。
- Duration:必须为正数。
IntervalType [in]:Interval 类型,可使用 mcDistance 与 mcTime,请见 McLengthType 类型。
Interval [in]:周期长度,依照所选的 IntervalType 而定,须为正值。
DurationType [in]:Duration 类型,可使用 mcDistance 与 mcCount,请见 McLengthType 类型。
Duration [in]:周期重复的持续时间,依照所选的 DurationType 而定,须为正值。
ValueSource [in]:定义轴值的来源,例如:位置。请见 McSource 类型。
- mcCommandedValue, mcSetValue-同步设定值。建议使用此设定。
- mcActualValue-同步实际值。此设定可能不稳定。
- mcSecondEncoderValue – 第二编码器读取的实际值。
回传值
返回 KsCommandStatus 结构。
备注
- McCamSwitch 为指定供应商的结构,用于定义数位凸轮的开关。
- McOutput 为连接至(实体)输出的指定供应商结构,若使用本身伺服驱动器的数位输出 (DO),需在 Start 前使用 EnableAxisOutput。
- 在 McCamSwitch 结构中,当 CamSwitchMode 为正时,不支援以下组合:
- IntervalType: mcTime, DurationType: mcDistance.
- IntervalType: mcTime, DurationType: mcCount.
- 当模数轴启用时,SetAxisCyclicSwitch 将不受影响,轴不会将位置视为模数位置。例如,若模数值为 360,当 FirstOnPosition 设为 360,LastOnPosition 设为 540,则轴旋转 1 圈时触发开启,旋转 1.5 圈时触发关闭。启用模数轴后,建议使用者:
- 使用 SetAxisPositionOffset 重设位置,以防止显示位置与内部位置不一致。例如,当模数值设为 360 时,使用者可能会看到位置为 0,而内部位置为 360000。
- 使用速度或距离 API 来触发开关。
范例
案例 1
循环开关在持续时间内完成其任务。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
40, //FirstOnPosition
60, //LastOnPosition
1, //AxisDirection. 1 = Positive.
0, //CamSwitchMode. 0 = Position.
0 //Duration. It is not used in this case.
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcDistance, //IntervalType
100, //Interval
mcDistance, //DurationType
250, //Duration
mcSetValue //ValueSource
);
案例 2
循环开关在完成任务之前中止。
McOutput outputBit = {
FALSE, //Axis or IO module. FALSE = I/O.
0, //Index
0 //Offset
}
McCamSwitch cyclicSwitch = {
0, //TrackNumber
0, //FirstOnPosition
0, //LastOnPosition
1, //AxisDirection. 1 = Positive.
1, //CamSwitchMode. 1 = Time.
0.003 //Duration
);
Command = SetAxisCyclicSwitch(
TargetAxis, //Index
outputBit, //Output
100, //StartPosition
cyclicSwitch, //CyclicSwitch
mcTime, //IntervalType
0.005, //Interval
mcCount, //DurationType
3, //Duration
mcSetValue //ValueSource
);
使用需求
RT | Win32 | |
---|---|---|
最低支援版本 | 4.1 | 4.1 |
标头档 | ksmotion.h | ksmotion.h |
程式库 | KsApi_Rtss.lib | KsApi.lib |
参见